package br.com.novagalvao.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

import br.com.novagalvao.beans.Categoria;
import br.com.novagalvao.beans.ProdutoBase;
import br.com.novagalvao.services.CategoriaService;
import br.com.novagalvao.services.ProdutoBaseService;

@Controller
@RequestMapping(value = "/produto")
public class ProdutoBaseController {

	private static final String CONTEXT_PAGE = "pages";

	@Autowired
	private ProdutoBaseService produtoBaseService;
	@Autowired
	private CategoriaService categoriaService;

	@RequestMapping(value = "/novo")
	public ModelAndView novo() {

		ModelAndView mav = new ModelAndView(CONTEXT_PAGE + "/produto/produto");
		List<Categoria> listaDeCategorias = categoriaService.listar();

		mav.addObject(listaDeCategorias);

		return mav;
	}

	@RequestMapping(value = "/salvar", method = RequestMethod.POST)
	public String salvar(ProdutoBase produtoBase,
			@RequestParam(value = "idCategoria") Integer idCategoria) {

		produtoBase.setCategoria(categoriaService.find(idCategoria));

		produtoBaseService.salvar(produtoBase);
		return "redirect:/produto/listar";
	}

	@RequestMapping(value = "/listar")
	public ModelAndView listar() {

		ModelAndView mav = new ModelAndView(CONTEXT_PAGE + "/produto/lista");
		List<ProdutoBase> produtoBases = produtoBaseService.listar();

		mav.addObject(produtoBases);

		return mav;
	}

	@RequestMapping(value = "/toEdit/{id}", method = RequestMethod.GET)
	public ModelAndView toEdit(@PathVariable int id) {

		ModelAndView mav = new ModelAndView(CONTEXT_PAGE + "/produto/produto");
		ProdutoBase produtoBase = produtoBaseService.find(id);

		List<Categoria> listaDeCategorias = categoriaService.listar();

		mav.addObject(listaDeCategorias);
		
		mav.addObject("produtoBase", produtoBase);

		return mav;
	}

	@RequestMapping(value = "/excluir/{id}", method = RequestMethod.GET)
	public String excluir(@PathVariable int id) {
		produtoBaseService.excluir(id);
		return "redirect:/produto/listar";
	}

}
